package ProxyDemo;

/**
 * 演示 静态代理模式 案例：夏洛 给 秋雅送花 代理人：马冬梅
 * 
 * @author jie
 *
 *         委托：夏洛 代理人：马冬梅
 * 
 *         核心：委托人 代理人 实现同样接口的方法
 * 
 *         静态代理不足：
 * 
 *         1、当增加委托人，导致 需要添加 更多的代理人
 * 
 *         2、委托人和代理人 之间依赖性很高，委托人 完全依赖于 特定的代理人 （eg 私人订制）
 *
 */

public class TestStaticProxy {
	public static void main(String[] args) {
		Real origin = new Real();// 夏洛
		PersonProxy pp = new PersonProxy(origin);// 马冬梅
		pp.sendFlower();// 开始工作
	}
}

// 送东西
interface SendSome {
	void sendFlower();

	void buyHouse();
}

class PersonProxy implements SendSome {

	private SendSome person;

	public PersonProxy(SendSome person) {
		this.person = person;
	}

	public void sendFlower() {
		System.out.println("开始代理");
		person.sendFlower();
		System.out.println("代理结束");
	}

	public void buyHouse() {
		// TODO Auto-generated method stub

	}

}

class Real implements SendSome {

	public void sendFlower() {
		System.out.println("夏洛送了 花  给秋雅");
	}

	public void buyHouse() {
		// TODO Auto-generated method stub

	}
}

class Real2 implements SendSome {

	public void sendFlower() {
		// TODO Auto-generated method stub

	}

	public void buyHouse() {
		System.out.println("元华  送 房给冬梅");

	}

}